#ifndef __MUTEX_GUARD_HPP__
#define __MUTEX_GUARD_HPP__

// 公共头文件区域
#include <iostream>
#include <pthread.h>
#include <queue>

// 互斥锁的守护对象，申请能自动对其进行上锁
class MutexGuard
{
public:
    // 注意传入的mutex必须经过初始化
    MutexGuard(pthread_mutex_t* mutex)
    :_mutex(mutex)
    {
        if (_mutex) pthread_mutex_lock(_mutex);  // 创建对象上锁
    }
    MutexGuard(const MutexGuard&) = delete;
    // 析构函数
    ~MutexGuard()
    {
        // 给mutex进行解锁
        if (_mutex) pthread_mutex_unlock(_mutex);
    }
private:
    pthread_mutex_t* _mutex;
};


#endif